package com.cjh.mybatis11.scriping;

import com.cjh.mybatis11.executor.parameter.ParameterHandler;
import com.cjh.mybatis11.mapping.BoundSql;
import com.cjh.mybatis11.mapping.MappedStatement;
import com.cjh.mybatis11.mapping.SqlSource;
import com.cjh.mybatis11.session.Configuration;
import org.dom4j.Element;

/**
 * @Descripton 脚本语言驱动
 * @Author cjh
 * @Date 2023/6/12 14:42
 */
public interface LanguageDriver {
    /**
     * 创建sql源码 （mapper xml 方式）
     * @param configuration
     * @param script
     * @param parameterType
     * @return
     */
    SqlSource createSqlSource(Configuration configuration, Element script, Class<?> parameterType);

    /**
     * 创建参数处理器
     * @param mappedStatement
     * @param parameterObject
     * @param boundSql
     * @return
     */
    ParameterHandler createParameterHandler(MappedStatement mappedStatement,
                                            Object parameterObject, BoundSql boundSql);

}
